package com.hst.capacity.domain.service;

import com.alicp.jetcache.anno.Cached;
import com.hst.capacity.domain.model.entity.auth.UserEntity;
import com.hst.capacity.domain.model.entity.auth.UserRoleEntity;
import com.hst.capacity.domain.model.response.auth.LoginUser;
import org.springframework.security.core.GrantedAuthority;

import java.util.Collection;
import java.util.List;

/**
 * User相关的领域服务
 *
 * @author Hans 12/11/2022
 */
public interface UserService {


    /**
     * 根据userId获取用户实体
     *
     * @param userId 用户ID
     * @return UserEntity
     */
    @Cached(name = "userCache::", key = "#userId", expire = 600)
    UserEntity getUser(String userId);

    /**
     * 根据用户名、密码进行身份验证。
     *
     * @param username 用户名
     * @param password 密码
     * @return UserEntity
     */
    LoginUser authenticate(String username, String password);

    /**
     * 根据userId查询用户角色列表
     *
     * @param userId 用户ID
     * @return List
     */
    Collection<GrantedAuthority> getAuthorities(String userId);

}
